草庐IT

c++ getline和stringstream

全部标签

c++ - 如何从 std::string 执行 "getline"?

我有问题。我加载整个文件,然后通过它获取一些信息。然而,在map格式中,信息可能有0或20条“线”。我需要知道如何通过std::string获取行。有一个函数(源流,目标字符串,十进制),但我需要(源字符串,目标字符串,十进制)。在C++中无法在流中搜索(仅使用许多临时字符串并多次提取和插入,尚不清楚,我不想以那种凌乱的方式进行)。所以我想知道如何从std::string获取行。比 最佳答案 你似乎想要std::istringstream,位于标题中:std::stringsome_string="...";std::istring

c++ - 为什么使用 LLVM 时 std::ifstream "break"std::getline 的缓冲?

我有一个简单的C++应用程序,它应该从POSIX命名管道中读取行:#include#include#includeintmain(){std::ifstreampipe;pipe.open("in");std::stringline;while(true){std::getline(pipe,line);if(pipe.eof()){break;}std::cout步骤:我创建了一个命名管道:mkfifoin。我使用g++-std=c++11test.cpp&&./a.out编译和运行C++代码。我将数据输入到in管道:sleepinfinity>in&#keeppipeopen,av

c++ - C++ 中的 "string"、 "stream"和 "stringstream"类是什么?

我想知道c++中string和stream有什么区别,stringstream是什么? 最佳答案 istream和ostream:流数据(文件、套接字等)的接口(interface)istringstream:一个istream包装一个字符串并提供它的内容ostringstream:一个ostream,将写入的内容保存为字符串例子:istringstreamdatastream("123");intval;datastream>>val;cout>val;cout>val;cout 关于

c++ - 使用 getline 和 while 循环拆分字符串

例如我有一个字符串:strings="apple|orange|kiwi";我搜索了一下,有一种方法:stringstreamstream(s);stringtok;getline(stream,tok,'|');但它只能返回第一个标记“apple”我想知道有什么办法可以返回一个字符串数组吗?谢谢你。假设字符串s可以更改。例如,字符串s="apple|orange|kiwi|berry"; 最佳答案 正如Benjamin指出的那样,您自己在标题中回答了这个问题。#include#include#includeintmain(){//

c++ - stringstream 字符串到 int

下面的C++代码执行int到string和string到int的转换。然后,它再次重复这些步骤。stringstream到int行stream1>>i3;正在破坏代码。我在这里错过了什么?#include#include#includeusingnamespacestd;intmain(){inti1=101;inti2=202;inti3=0;strings1="";strings2="";stringstreamstream1;for(inti=0;i>i3;//lineabovecausess1ands2togetmessedupduring2ndtimeinforloopcou

c++ - 如何初始化 std::stringstream?

我需要用整数连接一个字符串。为此,我正在使用stringstream通过以下方式:intnumPeople=10;stringstreamss;ss那奏效了。但我试图通过以下方式做到这一点:intnumPeople=10;stringstreamss我收到以下错误:“'”为什么我收到这个错误?为什么我不能分配stringstream我同时申报值(value)吗? 最佳答案 stringstreamssWhycan'tIassignthestringstreamvalueatthesametimeIdeclareit?这类似于希望这会

c++ - 在 getline() 方面需要帮助

这个问题在这里已经有了答案:Whydoesstd::getline()skipinputafteraformattedextraction?(5个回答)关闭3年前。如果在我的程序中我要求用户输入,我这样做是否有原因:intnumber;stringstr;intaccountNumber;cout>number;cout>accountNumber;为什么在输入第一个数字后,它会输出“输入姓名”,然后在我输入getline(cin,str)行的“str”之前立即输出“输入帐号”?谢谢! 最佳答案 getline(cin,str);读

c++ getline()在多次调用时不等待来自控制台的输入

我试图从控制台获取一些用户输入参数,两个字符串,两个整数和一个double。我正在尝试使用的相关代码是这样的:#include#includeusingnamespacestd;//...stringinputString;unsignedintinputUInt;doubleinputDouble;//...cout>inputUInt;tempDVD.setDuration(inputUInt);cout>inputUInt;tempDVD.setYear(inputUInt);cout>inputDouble;tempDVD.setPrice(inputDouble);但是,在运

c++ - 我应该预先分配 std::stringstream 吗?

我广泛使用std::stringstream在我的应用程序中构造字符串和错误消息。stringstreams通常是生命周期很短的自动变量。这样的使用会导致每个变量的堆重新分配吗?我应该从临时变量切换到类成员stringstream变量吗?在后一种情况下,如何保留stringstream缓冲区?(我应该用足够大的字符串初始化它还是有更优雅的方法?) 最佳答案 您是否分析过您的执行情况,并发现它们是导致减速的原因?考虑它们的用法。它们主要用于代码正常流程之外的错误消息吗?至于预留空间...某些实现可能会在对字符串流进行任何分配之前保留一

c++ - 为什么有两个不同的 getline() 函数(如果确实有)?

每次我快速编写一段C++代码行std::strings;cin>>s;我诅咒自己,因为我忘记了它停在空白处而不是整行。然后,在想起getline时,我总是对这两种变体感到困惑:std::strings;getline(std::cin,s);和:charcs[256];std::cin.getline(cs,sizeof(cs));这两者除了数据类型之外真的有区别吗?在我看来,C++方式应该是前者。在什么情况下我会使用后者,因为我可能应该使用真正的字符串还是以null结尾的字符数组?而且,既然输入确实应该是输入流的权限,为什么istream的前一部分不是?